home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Technology Seed / Jan. '98 ATS.toast / QuickTime™ 3.0b11 / QTPublicInterfaces / RIncludes / Sound.r < prev    next >
Encoding:
Text File  |  1998-01-12  |  8.8 KB  |  227 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Sound.r
  3.  
  4.      Contains:    Sound Manager Interfaces.
  5.  
  6.      Version:    Technology:    Sound Manager 3.3
  7.                  Release:    QuickTime 3.0 Beta
  8.  
  9.      Copyright:    © 1986-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18.  
  19. #ifndef __SOUND_R__
  20. #define __SOUND_R__
  21.  
  22. #ifndef __CONDITIONALMACROS_R__
  23. #include "ConditionalMacros.r"
  24. #endif
  25.  
  26. #define kNoSoundComponentType             '****'
  27. #define kSoundComponentType             'sift'                /* component type */
  28. #define kSoundComponentPPCType             'nift'                /* component type for PowerPC code */
  29. #define kRate8SubType                     'ratb'                /* 8-bit rate converter */
  30. #define kRate16SubType                     'ratw'                /* 16-bit rate converter */
  31. #define kConverterSubType                 'conv'                /* sample format converter */
  32. #define kSndSourceSubType                 'sour'                /* generic source component */
  33. #define kMixerType                         'mixr'
  34. #define kMixer8SubType                     'mixb'                /* 8-bit mixer */
  35. #define kMixer16SubType                 'mixw'                /* 16-bit mixer */
  36. #define kSoundInputDeviceType             'sinp'                /* sound input component */
  37. #define kWaveInSubType                     'wavi'                /* Windows Wave */
  38. #define kSoundOutputDeviceType             'sdev'                /* sound output component */
  39. #define kClassicSubType                 'clas'                /* classic hardware, i.e. Mac Plus */
  40. #define kASCSubType                     'asc '                /* Apple Sound Chip device */
  41. #define kDSPSubType                     'dsp '                /* DSP device */
  42. #define kAwacsSubType                     'awac'                /* Another of Will's Audio Chips device */
  43. #define kGCAwacsSubType                 'awgc'                /* Awacs audio with Grand Central DMA */
  44. #define kSingerSubType                     'sing'                /* Singer (via Whitney) based sound */
  45. #define kSinger2SubType                 'sng2'                /* Singer 2 (via Whitney) for Acme */
  46. #define kWhitSubType                     'whit'                /* Whit sound component for PrimeTime 3 */
  47. #define kSoundBlasterSubType             'sbls'                /* Sound Blaster for CHRP */
  48. #define kWaveOutSubType                 'wavo'                /* Windows Wave */
  49. #define kDirectSoundSubType             'dsnd'                /* Direct Sound */
  50. #define kUNIXsdevSubType                 'un1x'                /* UNIX base sdev */
  51. #define kSoundCompressor                 'scom'
  52. #define kSoundDecompressor                 'sdec'
  53. #define kAudioComponentType             'adio'                /* Audio components and sub-types */
  54. #define kAwacsPhoneSubType                 'hphn'
  55. #define kAudioVisionSpeakerSubType         'telc'
  56. #define kAudioVisionHeadphoneSubType     'telh'
  57. #define kPhilipsFaderSubType             'tvav'
  58. #define kSGSToneSubType                 'sgs0'
  59. #define kSoundEffectsType                 'snfx'                /* sound effects type */
  60. #define kSSpLocalizationSubType         'snd3'
  61. #define kSoundPortHandlerType             'soph'                /* sound output port handler component */
  62. #define kAwacsGCSubType                 'awgc'                /* awacs GC port handler */
  63. #define kSoundOutPortType                 'sopt'                /* sound output port component */
  64. #define kIntSpkrSubType                 'ispk'                /* internal speaker */
  65. #define kHeadphonesSubType                 'hdpn'                /* headphones */
  66. #define kExtSpkrSubType                 'espk'                /* external speaker */
  67. #define kEffectSubType                     'efct'                /* effect (like SRS or some other DSP function) */
  68. #define kSubwooferSubType                 'subw'                /* subwoofer */
  69. #define kSoundPowerType                 'spwr'                /* sound power component */
  70. #define kPowerAwacsSubType                 'awac'                /* awacs power */
  71. #define kPowerScreamerSubType             'scrm'                /* screamer power */
  72.  
  73. #define kSoundNotCompressed             'NONE'                /* sound is not compressed */
  74. #define k8BitOffsetBinaryFormat         'raw '                /* 8-bit offset binary */
  75. #define k16BitBigEndianFormat             'twos'                /* 16-bit big endian */
  76. #define k16BitLittleEndianFormat         'sowt'                /* 16-bit little endian */
  77. #define kFloat32Format                     'fl32'                /* 32-bit floating point */
  78. #define kFloat64Format                     'fl64'                /* 64-bit floating point */
  79. #define k24BitFormat                     'in24'                /* 24-bit integer */
  80. #define k32BitFormat                     'in32'                /* 32-bit integer */
  81. #define kMACE3Compression                 'MAC3'                /* MACE 3:1 */
  82. #define kMACE6Compression                 'MAC6'                /* MACE 6:1 */
  83. #define kCDXA4Compression                 'cdx4'                /* CD/XA 4:1 */
  84. #define kCDXA2Compression                 'cdx2'                /* CD/XA 2:1 */
  85. #define kIMACompression                 'ima4'                /* IMA 4:1 */
  86. #define kULawCompression                 'ulaw'                /* µLaw 2:1 */
  87. #define kALawCompression                 'alaw'                /* aLaw 2:1 */
  88. #define kMicrosoftADPCMFormat             0x6D730002            /* Microsoft ADPCM - ACM code 2 */
  89. #define kDVIIntelIMAFormat                 0x6D730011            /* DVI/Intel IMA ADPCM - ACM code 17 */
  90. #define kDVAudioFormat                     'dvca'                /* DV Audio */
  91. #define kOffsetBinary                     'raw '                /* for compatibility */
  92. #define kTwosComplement                 'twos'                /* for compatibility */
  93. #define kLittleEndianFormat             'sowt'                /* for compatibility */
  94.  
  95. #define k8BitRawIn                         0x01                /* data description */
  96. #define k8BitTwosIn                     0x02
  97. #define k16BitIn                         0x04
  98. #define kStereoIn                         0x08
  99. #define k8BitRawOut                     0x0100
  100. #define k8BitTwosOut                     0x0200
  101. #define k16BitOut                         0x0400
  102. #define kStereoOut                         0x0800
  103. #define kReverse                         0x00010000            /*   function description */
  104. #define kRateConvert                     0x00020000
  105. #define kCreateSoundSource                 0x00040000
  106. #define kHighQuality                     0x00400000            /*   performance description */
  107. #define kNonRealTime                     0x00800000
  108.  
  109.  
  110. /*----------------------------snd  • Sound----------------------------------------------*/
  111. type 'snd ' {
  112.         switch {
  113.             case FormatOne:
  114.                 key unsigned integer = $0001;
  115.                 unsigned integer = $$CountOf(Synthesizers);
  116.                 wide array Synthesizers {
  117.                     /* Resource ID of synthesizer/modifer */
  118.                     integer        squareWaveSynth        = $0001,
  119.                                 waveTableSynth        = $0003,
  120.                                 sampledSynth        = $0005;
  121.                     longint;                                    /* init parameter        */
  122.                 };
  123.  
  124.             case FormatTwo:
  125.                 key unsigned integer = $0002;
  126.                 integer        free = 0, keepInMemory = 256+1;        /* Space for refe count    */
  127.         };
  128.         unsigned integer = $$CountOf(SoundCmnds);
  129.         wide array SoundCmnds {
  130.             boolean        noData, hasData;
  131.             switch {
  132.                 case nullCmd:
  133.                     key bitstring[15] = 0;
  134.                     fill word;                                    /* Param 1 = nil        */
  135.                     fill long;                                    /* Param 2 = nil        */
  136.                 case quietCmd:
  137.                     key bitstring[15] = 3;
  138.                     fill word;                                    /* Param 1 = nil        */
  139.                     fill long;                                    /* Param 2 = nil        */
  140.                 case flushCmd:
  141.                     key bitstring[15] = 4;
  142.                     fill word;                                    /* Param 1 = nil        */
  143.                     fill long;                                    /* Param 2 = nil        */
  144.                 case waitCmd:
  145.                     key bitstring[15] = 10;
  146.                     integer        oneSecond = 2000;                /* Duration                */
  147.                     fill long;                                    /* Param 2 = nil        */
  148.                 case pauseCmd:
  149.                     key bitstring[15] = 11;
  150.                     fill word;                                    /* Param 1 = nil        */
  151.                     fill long;                                    /* Param 2 = nil        */
  152.                 case resumeCmd:
  153.                     key bitstring[15] = 12;
  154.                     fill word;                                    /* Param 1 = nil        */
  155.                     fill long;                                    /* Param 2 = nil        */
  156.                 case callBackCmd:
  157.                     key bitstring[15] = 13;
  158.                     integer;                                    /* User-defined            */
  159.                     longint;                                    /* User-defined            */
  160.                 case syncCmd:
  161.                     key bitstring[15] = 14;
  162.                     integer;                                    /* Count                */
  163.                     longint;                                    /* Identifier            */
  164.                 case emptyCmd:
  165.                     key bitstring[15] = 15;
  166.                     fill word;                                    /* Param 1 = nil        */
  167.                     fill long;                                    /* Param 2 = nil        */
  168.                 case freqDurationCmd:
  169.                     key bitstring[15] = 40;
  170.                     integer        oneSecond = 2000;                /* Duration                */
  171.                     longint;                                    /* frequency            */
  172.                 case restCmd:
  173.                     key bitstring[15] = 41;
  174.                     integer        oneSecond = 2000;                /* Duration                */
  175.                     fill long;                                    /* Param 2 = nil        */
  176.                 case freqCmd:
  177.                     key bitstring[15] = 42;
  178.                     fill word;                                    /* Param 1 = nil        */
  179.                     longint;                                    /* Frequency            */
  180.                 case ampCmd:
  181.                     key bitstring[15] = 43;
  182.                     integer;                                    /* Amplitude            */
  183.                     fill long;                                    /* Param 2                */
  184.                 case timbreCmd:
  185.                     key bitstring[15] = 44;
  186.                     integer        sineWave, squareWave = 255;        /* Timbre                */
  187.                     fill long;                                    /* Param 2                */
  188.                 case waveTableCmd:
  189.                     key bitstring[15] = 60;
  190.                     unsigned integer;                            /* Length                */
  191.                     longint;                                    /* Pointer to table        */
  192.                 case phaseCmd:
  193.                     key bitstring[15] = 61;
  194.                     integer;                                    /* Shift                */
  195.                     longint;                                    /* chanPtr                */
  196.                 case soundCmd:
  197.                     key bitstring[15] = 80;
  198.                     fill word;                                    /* Param 1 = nil        */
  199.                     longint;                                    /* Pointer to sound        */
  200.                 case bufferCmd:
  201.                     key bitstring[15] = 81;
  202.                     fill word;                                    /* Param 1 = nil        */
  203.                     longint;                                    /* Pointer to buffer    */
  204.                 case rateCmd:
  205.                     key bitstring[15] = 82;
  206.                     fill word;                                    /* Param 1 = nil        */
  207.                     longint;                                    /* Rate                    */
  208.             };
  209.         };
  210.         array DataTables {
  211.     DataTable:
  212.             fill long;                                            /* Pointer to data        */
  213.     SampleCnt:
  214.             unsigned longint;                                    /* # of sound samples    */
  215.             unsigned hex longint
  216.                     Rate22K = $56EE8BA3;                        /* Sampling rate        */
  217.             unsigned longint;                                    /* Start of loop        */
  218.             unsigned longint;                                    /* End of loop            */
  219.             hex byte;                                            /* encode (header type)    */
  220.             hex byte;                                            /* baseFrequency        */
  221.             hex string [$$Long(SampleCnt[$$ArrayIndex(DataTables)])];
  222.         };
  223. };
  224.  
  225. #endif /* __SOUND_R__ */
  226.  
  227.